using System;
using System.ServiceModel;

namespace PokerServerWebService.ServiceContracts
{
    /// <summary>
    /// Interfejs serwera pokera
    /// </summary>
    [ServiceContract(Namespace = "http://WCF.ServiceContracts/2007/12", Name = "IPokerGame", SessionMode = SessionMode.Allowed)]
    public interface IPokerGame
    {
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "Join")]
        PokerServerWebService.ServiceContracts.joinResponse Join(PokerServerWebService.ServiceContracts.JoinRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "Bet")]
        PokerServerWebService.ServiceContracts.betResponse Bet(PokerServerWebService.ServiceContracts.betRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "GetTable")]
        PokerServerWebService.ServiceContracts.tableResponse GetTable(PokerServerWebService.ServiceContracts.tableRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "Begin")]
        PokerServerWebService.ServiceContracts.beginResponse Begin(PokerServerWebService.ServiceContracts.beginRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "CreateRoom")]
        PokerServerWebService.ServiceContracts.createRoomResponse CreateRoom(PokerServerWebService.ServiceContracts.createRoomRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "LeaveRoom")]
        PokerServerWebService.ServiceContracts.leaveRoomResponse LeaveRoom(PokerServerWebService.ServiceContracts.leaveRoomRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "ActualPlayer")]
        PokerServerWebService.ServiceContracts.ActualPlayerResponse ActualPlayer(PokerServerWebService.ServiceContracts.ActualPlayerRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "GetRoomList")]
        PokerServerWebService.ServiceContracts.getRoomListResponse GetRoomList(PokerServerWebService.ServiceContracts.getRoomListRequest request);
        [OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = false, AsyncPattern = false, Action = "Pass")]
        PokerServerWebService.ServiceContracts.PassResponse Pass(PokerServerWebService.ServiceContracts.PassRequest request);
    }
}
